﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using BUS;
using DAL;
namespace QuanLyNhaSach
{
    public partial class Form_QLBanHang : DevComponents.DotNetBar.Office2007Form
    {
        Sach_BUS sach_bus;
        Sach_DTO sach_dto;
        HoaDon_BUS hoadon_bus;
        HoaDon_DTO hoadon_dto;
        ChiTietHoaDon_BUS chitiethoadon_bus;
        ChiTietHoaDon_DTO chitiethoadon_dto;

        public Form_QLBanHang()
        {
            InitializeComponent();
        }


        private void btnThem_Click(object sender, EventArgs e)
        {
            //lay thong tin sach theo ma sach
            sach_dto = new Sach_DTO();
            sach_bus = new Sach_BUS();

            sach_dto.Str_MaSach = txtMaSach.Text.Trim().ToLower();
            sach_dto = sach_bus.DanhSachSach_TheoMaSach(sach_dto.Str_MaSach);

            //kiem tra so luong phai lon hon 0 va phai nho hon so luong ton
            if (int.Parse(txtSoLuong.Text) <= 0)
            {
                MessageBoxEx.Show("Số lượng phải lớn hơn 0","Thông báo");
                return;
            }
            if (int.Parse(txtSoLuong.Text) >= sach_dto.I_SoLuong)
            {
                MessageBoxEx.Show("Số lượng phải nhỏ hơn số lượng tồn", "Thông báo");
                return;
            }
            //truong hop co roi lai them nua thi cap nhat lai dong đó.
            int flag = -1;//ko trung
            for (int i = 0; i < dtg_QLBanHang.Rows.Count; i++)
            {
                if (dtg_QLBanHang.Rows[i].Cells["Str_MaSach"].Value.ToString() == sach_dto.Str_MaSach)
                    flag = i;//trung thi cap nhat lai so luong va gia
            }
            if (flag != -1)//da trung thi cap nhat lai so luong va gia
            {
                int i_SoLuong = int.Parse(dtg_QLBanHang.Rows[flag].Cells["Str_SoLuong"].Value.ToString());
                decimal d_ThanhTien = decimal.Parse(dtg_QLBanHang.Rows[flag].Cells["Str_ThanhTien"].Value.ToString());
                dtg_QLBanHang.Rows[flag].Cells["Str_SoLuong"].Value = i_SoLuong + int.Parse(txtSoLuong.Text);
                decimal d_ThanhTienCapNhat = int.Parse(txtSoLuong.Text) * sach_dto.D_GiaBan;
                dtg_QLBanHang.Rows[flag].Cells["Str_ThanhTien"].Value = d_ThanhTien + d_ThanhTienCapNhat;
            }
            else//add cac dong vao datagridview(ma sach, ten, gia ban, so luong, thanh tien)             
                dtg_QLBanHang.Rows.Add(sach_dto.Str_MaSach, sach_dto.Str_TenSach, sach_dto.D_GiaBan, txtSoLuong.Text, sach_dto.D_GiaBan * int.Parse(txtSoLuong.Text));

            //tong tien
            decimal d_TongTien = 0;
            for (int i = 0; i < dtg_QLBanHang.Rows.Count; i++)
            {
                d_TongTien += decimal.Parse(dtg_QLBanHang.Rows[i].Cells["Str_ThanhTien"].Value.ToString());
            }
            txtTongTien.Text = d_TongTien.ToString();
        }

        private void Form_QLBanHang_Load(object sender, EventArgs e)
        {
            txtNgayLap.Text = DateTime.Now.ToShortDateString();
        }

        private void btnInHoaDon_Click(object sender, EventArgs e)
        {
            //kiem tra da nhap day du cac thong tin hay chua
            if (txtTenKH.Text == "")//ten khach hang
            {
                MessageBoxEx.Show("Chưa nhập tên khách hàng", "Thông báo");
                txtTenKH.Select();
                return;
            }
            if (txtDiaChi.Text == "")//dia chi
            {
                MessageBoxEx.Show("Chưa nhập địa chỉ", "Thông báo");
                txtDiaChi.Select();
                return;
            }
            if (txtDienThoai.Text == "")//dien thoai
            {
                MessageBoxEx.Show("Chưa nhập điện thoại", "Thông báo");
                txtDienThoai.Select();
                return;
            }
            if (txtEmail.Text == "")//email
            {
                MessageBoxEx.Show("Chưa nhập email", "Thông báo");
                txtEmail.Select();
                return;
            }
            int flag = 1;
            hoadon_bus = new HoaDon_BUS();
                        
            //them du lieu vao bang hoa don
            hoadon_dto = new HoaDon_DTO();
            hoadon_dto.Str_MaHD = hoadon_bus.MaHoaDonTang();
            hoadon_dto.Str_MaNV = "NV001";//
            hoadon_dto.D_NgayLap = DateTime.Parse(txtNgayLap.Text);
            hoadon_dto.Str_TenKH = txtTenKH.Text;
            hoadon_dto.Str_DiaChi = txtDiaChi.Text;
            hoadon_dto.Str_DienThoai = txtDienThoai.Text;
            hoadon_dto.Str_Email = txtEmail.Text;
            hoadon_dto.D_ThanhTien = decimal.Parse(txtTongTien.Text);
            hoadon_dto.I_TrangThai = 0;
            hoadon_bus.ThemHoaDon(hoadon_dto);
            //them du lieu vao bang chi tiet hoa don
            for (int i = 0; i < dtg_QLBanHang.Rows.Count; i++)
            {
                chitiethoadon_bus = new ChiTietHoaDon_BUS();
                chitiethoadon_dto = new ChiTietHoaDon_DTO();
                sach_bus = new Sach_BUS();
                sach_dto = new Sach_DTO();

                chitiethoadon_dto.Str_MaHD = hoadon_dto.Str_MaHD;
                chitiethoadon_dto.Str_MaSach = dtg_QLBanHang.Rows[i].Cells["Str_MaSach"].Value.ToString();
                chitiethoadon_dto.I_SoLuong = int.Parse(dtg_QLBanHang.Rows[i].Cells["Str_SoLuong"].Value.ToString());
                chitiethoadon_dto.D_DonGia = decimal.Parse(dtg_QLBanHang.Rows[i].Cells["Str_GiaBan"].Value.ToString());

                //cap nhat lai so luong ton cua sach
                sach_dto.Str_MaSach = dtg_QLBanHang.Rows[i].Cells["Str_MaSach"].Value.ToString();
                sach_dto = sach_bus.DanhSachSach_TheoMaSach(sach_dto.Str_MaSach);
                int SLSachTonHT = sach_dto.I_SoLuongBan;//so luong sach ban duoc truoc khi lap hoa don moi

                sach_dto.I_SoLuongBan = SLSachTonHT + int.Parse(dtg_QLBanHang.Rows[i].Cells["Str_SoLuong"].Value.ToString());//so luong sach ban duoc sau khi lap hoa don moi.
                int kt = sach_bus.CapNhatSach(sach_dto);
                if ( kt == 0 || chitiethoadon_bus.ThemChiTietHoaDon(chitiethoadon_dto) == 0)
                    flag = 0;
            }
            if (flag == 1)
            {
                MessageBoxEx.Show("Lập hóa đơn thành công","Thông báo");
            }
            //in du lieu ra file excel
        }

        private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true; 
        }


    }
}
